perm filename UPDATE.FAI[AL,HE] blob sn#184246 filedate 1975-10-28 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00007 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002		TITLE UPDATE
C00003 00003	THESE ROUTINES TOGETHER WITH SAITRG[SYS,HE] OCCUPY 1243 OCTAL WORDS
C00004 00004		BEGIN UPDATE
C00022 00005	MUL:	MOVEI J,2
C00023 00006	TH:	BLOCK 6
C00024 00007		BEGIN TRANSMULT
C00025 ENDMK
C⊗;
	TITLE UPDATE

	↓BLUE←←1	;assemble for blue arm
IFN BLUE,<
	↓LH←←1		;left hand arm (blue)
	↓RH←←0		;right hand arm (yellow)
>
IFE BLUE,<
	↓LH←←0		;left hand arm (blue)
	↓RH←←1		;right hand arm (yellow)
>
;THESE ROUTINES TOGETHER WITH SAITRG[SYS,HE] OCCUPY 1243 OCTAL WORDS

	INTERNAL UPDATE
	EXTERNAL ACOS,SQRT,ATAN2,ASIN,ACOS,SIND,COSD

	↓AC←1
	↓P←17

IFE BLUE,<
	S2V←←6.05
	S6V←←9.38
>
IFN BLUE,<
	S2V←←-6.05
	S6V←←9.28125
>
	S22V←←36.6025

↓RAD:	206712273406
IFN BLUE,<
↓SHOLDER:29.53125
	50.805
	20.24
>
IFE BLUE,<
↓SHOLDER:29.5
	8.375
	16.24
>
	BEGIN UPDATE
;UPDATE(T,J)
;GIVEN JOINT ANGLES J COMPUTES THE TRANSFORMATION T
;TIME APPROX 6 M. SEC

	A1←←2
	A2←←3
	A3←←4
	R1←←5
	R2←←6
	R3←←7
	I←←10
	J←←11
	K←←12

↑UPDATE:
	MOVEM 16,HOLD+16
	HRRZI 16,HOLD
	BLT 16,HOLD+15
	HRL AC,-1(P)		;TH
	HRRI AC,TH
	BLT AC,TH+5
	SETZM T			;SET T TO UNIT MATRIX
	MOVE AC,[XWD T,T+1]
	BLT AC,T+13
	MOVSI AC,(1.0)
	MOVEM AC,T
	MOVEM AC,T+5
	MOVEM AC,T+12
	SETZM LINK
MATMUL:				;MATMUL	T(K)←T(K-1)*A(K)
	MOVE AC,[XWD T,TN]
	BLT AC,TN+13		;MOVE T INTO TN
	MOVE K,LINK
	CAIN K,2
	JRST[	MOVE AC,SI3
		MOVEM AC,SI
		MOVE AC,CO3
		MOVEM AC,CO
		MOVE AC,TH+2
		MOVEM AC,S+2
		JRST IDSU]
	PUSH P,TH(K)
	PUSHJ P,SIND
	MOVEM AC,SI
	MOVE K,LINK
	PUSH P,TH(K)
	PUSHJ P,COSD
	MOVEM AC,CO
IDSU:	MOVE K,LINK
;FIRST ROW
	MOVE A1,CO
	MOVE A2,SI
	SETZ A3,
	MOVEI I,0
	PUSHJ P,MUL
;SECOND ROW
	MOVN A1,CA(K)
	FMPR A1,SI
	MOVE A2,CA(K)
	FMPR A2,CO
	MOVE A3,SA(K)
	MOVEI I,1
	PUSHJ P,MUL
;THIRD ROW
	MOVE A1,SA(K)
	FMPR A1,SI
	MOVN A2,SA(K)
	FMPR A2,CO
	MOVE A3,CA(K)
	MOVEI I,2
	PUSHJ P,MUL
;FOURTH ROW
	SETZ A1,
	SETZ A2,
	MOVE A3,S(K)
	MOVEI I,3
	PUSHJ P,MUL
	MOVE AC,TN+3		;OLD X
	FADRM AC,T+3		;NEW X
	MOVE AC,TN+7		;OLD Y
	FADRM AC,T+7		;NEW Y
	MOVE AC,TN+13		;OLD Z
	FADRM AC,T+13		;NEW Z
	AOS K,LINK
	CAIGE K,6
	JRST MATMUL
	HRRZ K,-2(P)
	MOVEI AC,13(K)
	HRLI K,T
	BLT K,(AC)
	HRRZ K,-2(P)
	MOVE AC,SHOLDER
	FADRM AC,3(K)		;X
	MOVE AC,SHOLDER+1
	FADRM AC,7(K)		;Y
	MOVE AC,SHOLDER+2
	FADRM AC,13(K)		;Z
	HRLZI 16,HOLD
	BLT 16,15
	MOVE 16,HOLD+16
	SUB P,[3(3)]
	JRST @3(P)

MUL:	MOVEI J,2
L2:	MOVE AC,PW(J)
	BLT AC,R1+2
	FMPR R1,A1
	FMPR R2,A2
	FMPR R3,A3
	FADR R1,R2
	FADR R1,R3
	MOVEM R1,T(I)
	ADDI I,4
	SOJGE J,L2
	POPJ P,
TH:	BLOCK 6
PW:	XWD TN+10,R1
	XWD TN+4,R1
	XWD TN,R1
LINK:	0
SI:	0
CO:	0
T:	BLOCK 14
TN:	BLOCK 14
SI3:	-1.0
CO3:	0.0
S:	0.0
	S2V
	0.0
	0.0
	0.0
	S6V
SA:	-1.0
	1.0
	0.0
	-1.0
	1.0
	0.0
CA:	0.0
	0.0
	1.0
	0.0
	0.0
	1.0
HOLD:	BLOCK 17
	BEND
	BEGIN TRANSMULT
	S←1
	M←2
	A1←3
	A2←4
	A3←5
	A4←6
	I←7
	J←10
	R←11
	T←14
	U←13
↑TIMES:HRL T,-1(P)
	HRRI T,MLT
	BLT T,MLT+13
	MOVEI T,MLT
	HRRZ U,-2(P)
	HRRZ R,-3(P)
	MOVEI I,3

L1:	MOVEI J,3

	MOVE A1,(U)
	MOVE A2,1(U)
	MOVE A3,2(U)
L2:	MOVE S,A1
	FMPR S,(T)
	MOVE M,A2
	FMPR M,4(T)
	FADR S,M
	MOVE M,A3
	FMPR M,10(T)
	FADR S,M
	MOVEM S,(R)
	AOJ R,
	AOJ T,
	SOJG J,L2

	FMPR A1,(T)
	FMPR A2,4(T)
	FADR A1,A2
	FMPR A3,10(T)
	FADR A1,A3
	FADR A1,3(U)
	MOVEM A1,(R)
	AOJ R,
	SUBI T,3
	ADDI U,4
	SOJG I,L1
	SUB P,[XWD 4,4]
	JRST @4(P)
MLT:	BLOCK 14
	BEND

	END